#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char* options[] = { "选项:", "座位预约", "时间", "设置" };
    int oldLength = sizeof(options) / sizeof(options[0]);

    // 假设新的数组内容
    char* newOptions[] = { "新选项:", "新内容1", "新内容2", "新内容3", "新内容4", "新内容5" };
    int newLength = sizeof(newOptions) / sizeof(newOptions[0]);

    // 释放旧数组的内存（如果旧数组的元素是动态分配的字符串才需要这一步，这里假设不是动态分配的字符串，所以注释掉这部分）
    /*for (int i = 0; i < oldLength; i++) {
        //free(options[i]);
    }*/

    // 重新分配内存给 options 数组
    options = (char**)realloc(options, newLength * sizeof(char*));
    if (options == NULL) {
        perror("Memory allocation failed");
        return 1;
    }

    // 复制新数组的内容到 options 数组
    for (int i = 0; i < newLength; i++) {
        int len = strlen(newOptions[i]) + 1;
        options[i] = (char*)malloc(len);
        strcpy(options[i], newOptions[i]);
    }

    // 打印新的 options 数组内容
    for (int i = 0; i < newLength; i++) {
        printf("%s\n", options[i]);
    }

    // 释放新分配的内存（如果旧数组的元素是动态分配的字符串才需要这一步，这里假设不是动态分配的字符串，所以注释掉这部分）
    /*for (int i = 0; i < newLength; i++) {
        free(options[i]);
    }*/

    return 0;
}